import numpy as np
# 生成时间序列
duration = 0.01  # 0.01秒
sample_rate = 32000  # 32kHz采样频率
t = np.linspace(0, duration, int(sample_rate * duration), endpoint=False)

# 创建复数信号（欧拉公式：e^(jωt) = cos(ωt) + j*sin(ωt)）
freq = 1000  # 1kHz频率
complex_signal = np.exp(1j * 2 * np.pi * freq * t)

# 方法1：使用abs函数计算模
magnitude1 = np.abs(complex_signal)      
print(magnitude1)                                                        

# 方法2：使用实部和虚部计算模
magnitude2 = np.sqrt(complex_signal.real**2 + complex_signal.imag**2)   
                                              

print(f"两种方法计算的模是否相同: {np.allclose(magnitude1, magnitude2)}")
print(f"模是否为常数: {np.allclose(magnitude1, 1)}")

# 计算相位                                                                                                                                                
phase = np.angle(complex_signal)  # 弧度制
phase_degrees = np.degrees(phase)  # 角度制

# 计算相位差（相邻采样点之间的相位差）
phase_diff = np.diff(phase)
phase_diff_degrees = np.degrees(phase_diff)

print(f"相位范围: {np.min(phase_degrees):.1f}° 到 {np.max(phase_degrees):.1f}°")
print(f"平均相位差: {np.mean(phase_diff_degrees):.2f}°")                       
print(f"理论相位差: {360 * freq / sample_rate:.2f}°")